package com.ticket.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ticket.common.annotation.Excel;
import com.ticket.common.core.domain.BaseEntity;
import org.springframework.data.annotation.Transient;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;

/**
 * 场次对象 yanchu_session
 * 
 * @date 2023-09-26
 */
@ApiModel(description = "场次对象")
public class YanchuSession extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 场次编号 */
    private Long id;

    /** 场馆编号 */
    @Excel(name = "场馆编号")
    @NotNull(message = "场馆编号不可以为空")
    @ApiModelProperty(value = "场馆编号")
    private Long hallId;

    /** 语言版本 */
    @Excel(name = "语言版本")
    private String languageVersion;

    /** 演出编号 */
    @Excel(name = "演出编号")
    @NotNull(message = "演出编号不可以为空")
    @ApiModelProperty(value = "演出编号")
    private Long performId;

    /** 演出时间 */
    @Excel(name = "演出时间")
    //@NotNull(message = "演出时间不可以为空")
    @ApiModelProperty(value = "演出时间")
    private Date playTime;

    /** 结束时间 */
    @Excel(name = "结束时间")
    private Date endTime;

    /** 检测到的截止时间，没过这个时间不能删 */
    @Excel(name = "检测到的截止时间，没过这个时间不能删")
    private String deadline;

    /** 场次日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "场次日期", width = 30, dateFormat = "yyyy-MM-dd")
    //@NotNull(message = "场次日期不可以为空")
    @ApiModelProperty(value = "场次日期")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date sessionDate;

    @Excel(name = "场次名称")
    private String sessionName;

    /** 票价 */
    @Excel(name = "状态")
    private Integer status;

    /** 提示(如是否需要戴口罩，有什么福利，显示在选座购票位置的影厅后边，格式类似：6号Barco厅-（戴口罩勿饮食）凭票领券免费停车3小时) */
    @Excel(name = "提示(如是否需要戴口罩，有什么福利，显示在选座购票位置的影厅后边，格式类似：6号Barco厅-", readConverterExp = "戴=口罩勿饮食")
    private String sessionTips;

    /** 总座位数 */
    @Excel(name = "总座位数")
    @Transient
    private Integer seatNums = 0;

    /** 售出座位数 */
    @Excel(name = "售出座位数")
    private Integer sallNums = 0;
    @Excel(name = "已售票房")
    private BigDecimal selledMoney = BigDecimal.ZERO;
    @Excel(name = "总票房")
    private BigDecimal totalMoney = BigDecimal.ZERO;
    @Excel(name = "已核验数")
    private Integer checkedNums = 0;
    @Excel(name = "所属剧院")
    private Long operaId;

    private Date cancelTime;
    @Excel(name = "是否限购")
    @ApiModelProperty(value = "是否限购 0不限购1限购")
    private Long isLimit;
    @Excel(name = "限购数量")
    @ApiModelProperty(value = "限购数量")
    private Long limitCount;
    @Excel(name = "是否删除 0未删除1已删除")
    private Integer isDel = 0;

    public Integer getIsDel() {
        return isDel;
    }

    public void setIsDel(Integer isDel) {
        this.isDel = isDel;
    }

    public Long getIsLimit() {
        return isLimit;
    }

    public void setIsLimit(Long isLimit) {
        this.isLimit = isLimit;
    }

    public Long getLimitCount() {
        return limitCount;
    }

    public void setLimitCount(Long limitCount) {
        this.limitCount = limitCount;
    }


    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    @ApiModelProperty(value = "售票开始时间")
    private Date ticketStart;
    @ApiModelProperty(value = "售票结束时间")
    private Date ticketEnd;
    @ApiModelProperty(value = "购票规则")
    private Integer ticketType;
    @ApiModelProperty(value = "入场通知 0:关闭;1:开启")
    private Integer enterNotice;
    @ApiModelProperty(value = "实名认证类型 1：非实名认证；2：一票一证；3：一单一证")
    private Integer autType;
    @ApiModelProperty(value = "1：电子票；2：纸质票")
    private Integer isTickets;

    @Transient
    private String hallName;
    @ApiModelProperty(value = "复制场次时 选择的场次id")
    @Transient
    private Long copyId;
    @ApiModelProperty(value = "复制场次时 选择复制的内容 1：票档设置 2：票房规划 3：优惠政策;多个逗号拼接")
    @Transient
    private String copyType;

    @ApiModelProperty(value = "预留数量")
    private Long resveredCount;

    @ApiModelProperty(value = "发布时间")
    private Date upTime;
    @ApiModelProperty(value = "演出开始时间")
    @Transient
    private String startDate;
    @ApiModelProperty(value = "演出结束时间")
    @Transient
    private String endDate;

    @ApiModelProperty(value = "售票开始时间")
    @Transient
    private String startTicTime;
    @ApiModelProperty(value = "售票结束时间")
    @Transient
    private String endTicTime;

    @ApiModelProperty(value = "取消原因")
    private String cancelTips;

    @ApiModelProperty(value = "演出名称")
    @Transient
    private String performName;

    @ApiModelProperty(value = "剧院名称")
    @Transient
    private String operaName;
    @ApiModelProperty(value = "海报地址")
    @Transient
    private String performPoster;

    private Integer reminded = 0;
    public Integer getReminded() {
        return reminded;
    }

    public void setReminded(Integer reminded) {
        this.reminded = reminded;
    }


    public String getCancelTips() {
        return cancelTips;
    }

    public void setCancelTips(String cancelTips) {
        this.cancelTips = cancelTips;
    }


    public Date getUpTime() {
        return upTime;
    }

    public void setUpTime(Date upTime) {
        this.upTime = upTime;
    }

    public Long getResveredCount() {
        return resveredCount;
    }

    public void setResveredCount(Long resveredCount) {
        this.resveredCount = resveredCount;
    }

    public String getHallName() {
        return hallName;
    }

    public void setHallName(String hallName) {
        this.hallName = hallName;
    }

    public Long getOperaId() {
        return operaId;
    }

    public void setOperaId(Long operaId) {
        this.operaId = operaId;
    }

    public Integer getCheckedNums() {
        return checkedNums;
    }

    public void setCheckedNums(Integer checkedNums) {
        this.checkedNums = checkedNums;
    }

    public BigDecimal getSelledMoney() {
        return selledMoney;
    }

    public void setSelledMoney(BigDecimal selledMoney) {
        this.selledMoney = selledMoney;
    }

    public BigDecimal getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(BigDecimal totalMoney) {
        this.totalMoney = totalMoney;
    }



    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setHallId(Long hallId) 
    {
        this.hallId = hallId;
    }

    public Long getHallId() 
    {
        return hallId;
    }
    public void setLanguageVersion(String languageVersion) 
    {
        this.languageVersion = languageVersion;
    }

    public String getLanguageVersion() 
    {
        return languageVersion;
    }
    public void setPerformId(Long performId)
    {
        this.performId = performId;
    }

    public Long getPerformId()
    {
        return performId;
    }
    public void setPlayTime(Date playTime)
    {
        this.playTime = playTime;
    }

    public Date getPlayTime()
    {
        return playTime;
    }
    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }
    public void setDeadline(String deadline) 
    {
        this.deadline = deadline;
    }

    public String getDeadline() 
    {
        return deadline;
    }
    public void setSessionDate(Date sessionDate) 
    {
        this.sessionDate = sessionDate;
    }

    public Date getSessionDate() 
    {
        return sessionDate;
    }

    public void setSessionTips(String sessionTips) 
    {
        this.sessionTips = sessionTips;
    }

    public String getSessionTips() 
    {
        return sessionTips;
    }
    public void setSeatNums(Integer seatNums) 
    {
        this.seatNums = seatNums;
    }

    public Integer getSeatNums() 
    {
        return seatNums;
    }
    public void setSallNums(Integer sallNums) 
    {
        this.sallNums = sallNums;
    }

    public Integer getSallNums() 
    {
        return sallNums;
    }
    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getSessionName() {
        return sessionName;
    }

    public void setSessionName(String sessionName) {
        this.sessionName = sessionName;
    }

    public Date getTicketStart() {
        return ticketStart;
    }

    public void setTicketStart(Date ticketStart) {
        this.ticketStart = ticketStart;
    }

    public Date getTicketEnd() {
        return ticketEnd;
    }

    public void setTicketEnd(Date ticketEnd) {
        this.ticketEnd = ticketEnd;
    }

    public Integer getTicketType() {
        return ticketType;
    }

    public void setTicketType(Integer ticketType) {
        this.ticketType = ticketType;
    }

    public Integer getEnterNotice() {
        return enterNotice;
    }

    public void setEnterNotice(Integer enterNotice) {
        this.enterNotice = enterNotice;
    }

    public Integer getAutType() {
        return autType;
    }

    public void setAutType(Integer autType) {
        this.autType = autType;
    }

    public Integer getIsTickets() {
        return isTickets;
    }

    public void setIsTickets(Integer isTickets) {
        this.isTickets = isTickets;
    }

    public Long getCopyId() {
        return copyId;
    }

    public void setCopyId(Long copyId) {
        this.copyId = copyId;
    }

    public String getCopyType() {
        return copyType;
    }

    public void setCopyType(String copyType) {
        this.copyType = copyType;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getPerformName() {
        return performName;
    }

    public void setPerformName(String performName) {
        this.performName = performName;
    }

    public String getOperaName() {
        return operaName;
    }

    public void setOperaName(String operaName) {
        this.operaName = operaName;
    }

    public String getStartTicTime() {
        return startTicTime;
    }

    public void setStartTicTime(String startTicTime) {
        this.startTicTime = startTicTime;
    }

    public String getEndTicTime() {
        return endTicTime;
    }

    public void setEndTicTime(String endTicTime) {
        this.endTicTime = endTicTime;
    }

    public String getPerformPoster() {
        return performPoster;
    }

    public void setPerformPoster(String performPoster) {
        this.performPoster = performPoster;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("hallId", getHallId())
            .append("languageVersion", getLanguageVersion())
            .append("performId", getPerformId())
            .append("playTime", getPlayTime())
            .append("endTime", getEndTime())
            .append("deadline", getDeadline())
            .append("sessionDate", getSessionDate())
            .append("status", getStatus())
            .append("sessionTips", getSessionTips())
            .append("seatNums", getSeatNums())
            .append("sallNums", getSallNums())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
